home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
Inspectors
/
InspectMe
/
ThingInspector.m
< prev
next >
Wrap
Text File
|
1995-06-12
|
3KB
|
134 lines
// ThingInspector.m
// By Kevin Brain (ksbrain@zeus.UWaterloo.ca)
// Acts as an intermediary between the Thing1 and Thing2
// (Tank) attribute inspector view controls (layed out in
// the file ThingInspector.nib) and the objects they inspect.
#import "ThingInspector.h"
#import "InspectMeApp.h"
#import "Thing1.h"
#import "Tank.h"
#import "InspectorManager.h"
#import <appkit/Control.h> // displaying attributes
@implementation ThingInspector
static id theThingInspector = nil; // just one per class
// only a single instance of this class is permitted
// use [ThingInspector new] to return the single instance
+ new
{
if (!theThingInspector) {
theThingInspector = self = [super new];
[NXApp loadNibSection:"ThingInspector.nib" owner:self];
}
else
self = theThingInspector;
return self;
}
- setupInspectors:(id)mainInspector
{
inspectorManager = [NXApp inspectorManager];
thing1InspectorNum = [inspectorManager
addInspector:(id)thing1InspectorBox
title:(const char *)"Thing 1 Inspector"
atLocation:LOWERLEFTX :LOWERLEFTY
cached:YES cacheWindow:[thing1InspectorBox window]];
tankInspectorNum = [inspectorManager
addInspector:(id)tankInspectorBox
title:(const char *)"Thing 2 Inspector"
atLocation:LOWERLEFTX :LOWERLEFTY
cached:YES cacheWindow:[tankInspectorBox window]];
return self;
}
- setCurrentParameterReceiver:(id)newCurrent
{
currentParameterReceiver = newCurrent;
return self;
}
- (unsigned int)thing1InspectorNum
{
return thing1InspectorNum;
}
- (unsigned int)tankInspectorNum
{
return tankInspectorNum;
}
- reflectThing1Attributes:(id)theObject
{
if(!theObject) return self;
[outNumber setIntValue:[theObject number]];
[outSize setIntValue:[theObject size]];
switch([theObject shape]) {
case SHAPE_CIRCLES:
[outShape setTitle:"Circles"];
break;
case SHAPE_SQUARES:
[outShape setTitle:"Squares"];
break;
}
return self;
}
- reflectTankAttributes:(id)theObject
{
char buffer[15];
if(!theObject) return self;
sprintf(buffer,"%8.1f",[theObject capacity]);
[outCapacity setStringValue:buffer];
sprintf(buffer,"%8.1f",[theObject holding]);
[outHolding setStringValue:buffer];
return self;
}
/* Setting ingredient attribute values */
/* Targets of inspector controls */
/* NOTE: No range checking has been added to these methods yet. */
- inspSetNumber:sender
{
[currentParameterReceiver setNumber:[sender intValue]];
return self;
}
- inspSetSize:sender
{
[currentParameterReceiver setSize:[sender intValue]];
return self;
}
- inspSetShape:sender
{
[currentParameterReceiver setShape:[[sender selectedCell] tag]];
return self;
}
- inspSetCapacity:sender
{
[currentParameterReceiver setCapacity:[sender floatValue]];
return self;
}
- inspSetHolding:sender
{
[currentParameterReceiver setHolding:[sender floatValue]];
return self;
}
@end